assertThat( 'pErwarteterWert' : 'pTatsächlicherWert' : pMatcher [: 'nachricht');
Prüft, ob die Daten, addressiert durch 'pErwarteterWert' und 'pTatsächlicherWert', den in der
Prozedur 'pMatcher' hinterlegten Regeln entsprechen. Die Zusicherung gilt als fehlgeschlagen, wenn
der Matcher *off
zurückliefert.
Diese Zusicherung kann zum Vergleichen besonders langer Zeichenketten oder anderer komplexer Datentypen, wie zum Beispiel XML oder Json verwendet werden.
Funktionswert:void
Beispiel 1 (Zeichenkette):
expected = 'Donald Duck';
actual = 'Dagobert Duck';
assertThat( %addr(expected) :
%addr(actual) :
%paddr(assertThatMatcher));
In diesem Beispiel sollte der Matcher *off
zurückgeben, weil 'Donald Duck'
offensichtlich nicht gleich 'Dagobert Duck' ist.
dcl-ds data_t qualified template;
type char(10);
seqNbr int(10);
itemNbr char(10);
end-ds;
dcl-ds erwarteterWert likeds(data_t) inz;
dcl-ds tatsaechlicherWert likeds(data_t) inz;
dcl-pr matcher ind;
expected pointer const;
actual pointer const;
message like(msgText_t) options(*nopass);
end-pr;
erwarteterWert.type = '*ITEM';
erwarteterWert.seqNbr = 1;
erwarteterWert.itemNbr = '4715687963';
tatsaechlicherWert.type = '*ITEM';
tatsaechlicherWert.seqNbr = 2;
tatsaechlicherWert.itemNbr = '8858416778';
assertThat( %addr(erwarteterWert) :
%addr(tatsaechlicherWert) :
%paddr(matcher));
// -------------------------------------------------------
// Prozedur zum Vergleichen von 'erwarteterWert'
// mit 'tatsaechlicherWert'.
// -------------------------------------------------------
dcl-proc matcher export;
dcl-pi *n ind;
expected pointer const;
actual pointer const;
message like(msgText_t) options(*nopass);
end-pi;
dcl-ds expectedData likeds(data_t) based(expected);
dcl-ds actualData likeds(data_t) based(actual);
if (expectedData.type = actualData.type and
expectedData.seqNbr = actualData.seqNbr and
expectedData.itemNbr = actualData.itemNbr);
return *on;
else;
return *off;
endif;
end-proc;
In diesem Beispiel muss der Matcher die Datenstrukturen vergleichen und, abhängig vom Ergebnis der
Prüfung, entweder *on
oder *off
zurückgeben. Sehr wahrscheinlich wird er
*off
zurückgeben, weil weder 'seqNbr' noch 'itemNbr' übereinstimmen.